package com.pz.minioproxy.constant;

import com.pz.gulimall.common.exception.RRException;

public class BigFileConstant {
    public static final String bucketName = "big-file";

    /**
     * 获取文件的扩展名
     * @param fileName 带后缀的文件名
     * @return 文件后缀名(.png, .mov...)
     */
    public static String getFileNameSuffix(String fileName){
        int index = fileName.lastIndexOf('.');
        if(index != -1){
            return fileName.substring(index);
        } else {
            //文件名不带扩展名
            throw new RRException("未携带规范文件名，需要携带扩展名");
        }
    }

    /**
     * 返回大文件的文件夹前缀
     * @param md5 大文件MD5值
     * @return 文件分块的文件夹前缀 {md5第一位字符}/{md5第二位字符}/{md5}/
     */
    public static String getBlobPathPrefix(String md5){
        return md5.charAt(0)+"/"+md5.charAt(1)+"/"+md5+"/";
    }

    /**
     * 获取分块文件的objectName
     * @param md5 大文件MD5值
     * @return 文件分块的完整objectName {md5第一位字符}/{md5第二位字符}/{md5}/{md5}--{1,2,3...}.suffix
     */
    public static String getBlobObjectName(String md5, long index, String fileName){
        return getBlobPathPrefix(md5)+md5+"-"+index+getFileNameSuffix(fileName);
    }

    /**
     * 获取大文件存在标记的objectName
     * @param md5 大文件MD5值
     * @return 大文件存在标记存储格式：exists/{md5}
     */
    public static String getBigFileFlagObjectName(String md5){
        return "exists/" + md5;
    }
}
